/*
 * @Description: CXT SQL Server IPC 处理器
 * @Author: duan_shuangjun 丶
 * @Date: 2025-09-24 22:00:00
 */
import { ipcMain } from 'electron'
import { cxtDB, isCXTDatabaseConnected } from './database'
import { fail } from '../utils/response'

/**
 * 注册 CXT SQL Server 相关的 IPC 处理器
 */
export function registerCXTDatabaseHandlers() {
    // 统一 cxt 域 - 对应老项目的 sqlServer:* 调用
    ipcMain.handle('rpc:cxt', async (event, { action, payload }: { action: string; payload?: any }) => {
        try {
            // 检查数据库连接是否可用
            if (!isCXTDatabaseConnected()) {
                return fail('CXT 数据库未连接，请检查 SQL Server 服务是否运行', 503)
            }
            console.log('CXT action:', action, payload)
            switch (action) {
                // 获取订单列表
                case 'getOrderList': {
                    return await cxtDB.list('OrderInfo')
                }

                // 获取订单详情 - 对应 getCXTOrderInfoApi
                case 'getOrderInfo': {
                    const { datasource_id, OrderStatus } = payload || {}
                    const where = { datasource_id, OrderStatus }
                    console.log('cxt获取订单详情:', where)
                    return await cxtDB.one('OrderInfo', where)
                }

                // 创建订单 - 对应 CXTOrderInfoCreateApi
                case 'createOrder': {
                    return await cxtDB.insert('OrderInfo', payload || {})
                }

                // 删除订单 - 对应 CXTOrderInfoDeleteApi
                case 'deleteOrder': {
                    return await cxtDB.delete('OrderInfo', payload || {})
                }

                // 创建桌台菜品 - 对应 CXTOrderZhuoTaiDishCreateApi
                case 'createDeskDish': {
                    return await cxtDB.insert('OrderZhuoTaiDish', payload || {})
                }

                // 批量创建桌台菜品 - 对应 CXTOrderZhuoTaiDishBatchCreateApi
                case 'batchCreateDeskDish': {
                    return await cxtDB.insertBatch('OrderZhuoTaiDish', payload || [])
                }

                // 批量创建分区 - 对应 CXTBaseAreaBatchCreateApi
                case 'batchCreateArea': {
                    return await cxtDB.insertBatch('BaseArea', payload || [])
                }

                // 删除数据 - 对应 deleteDataApi
                case 'deleteData': {
                    const { table, where } = payload || {}
                    return await cxtDB.delete(table, where)
                }

                // 获取数据详情 - 对应 dataDetailApi
                case 'getDataDetail': {
                    const { table, where } = payload || {}
                    return await cxtDB.one(table, where)
                }

                // 批量创建数据 - 对应 batchDataCreateApi
                case 'batchCreateData': {
                    const { table, data } = payload || {}
                    return await cxtDB.insertBatch(table, data)
                }

                // 更新数据 - 对应 dataUpdateApi
                case 'updateData': {
                    const { table, where, data } = payload || {}
                    return await cxtDB.update(table, where, data)
                }

                // 批量更新数据 - 对应 dataBatchUpdateApi
                case 'batchUpdateData': {
                    const { table, data } = payload || {}
                    return await cxtDB.updateBatch(table, data)
                }

                // 执行 SQL - 对应 dataSQLApi
                case 'executeSQL': {
                    const { sql, params } = payload || {}
                    return await cxtDB.executeSQL(sql, params)
                }

                // 获取数据列表 - 对应 getDataListApi
                case 'getDataList': {
                    const { table, where, field } = payload || {}
                    return await cxtDB.list(table, where, field)
                }

                default:
                    return fail(`Unknown CXT action: ${action}`, 400)
            }
        } catch (error: any) {
            console.error(`CXT action ${action} failed:`, error)
            return fail(error.message, 500)
        }
    })
}
